function detectBrowser()
{
    var BO = new Object();
    var nav = navigator;
    var appVer = nav.appVersion;
    var app = nav.appName;
    var agent = nav.userAgent;
    str_pos = agent.indexOf("MSIE");
    var nu = agent.substr((str_pos + 5), 3);
    BO.ie = false;
    BO.ns4 = !BO.ie && (document.layers != null) && (window.confirm != null) && (document.createElement == null);
    BO.ff = (agent.toLowerCase().indexOf("firefox") !=- 1);
    BO.opera = (self.opera != null);
    BO.gecko = (document.getBoxObjectFor != null);
    BO.khtml = (navigator.vendor == "KDE");
    BO.konq = ((navigator.vendor == "KDE") || (document.childNodes) && (!document.all) && (!navigator.taintEnabled));
    BO.safari = (document.childNodes) && (!document.all) && (!navigator.taintEnabled) && (!navigator.accentColorName);
    BO["safari1.2"] = (parseInt(0).toFixed == null) && (BO.safari && (window.XMLHttpRequest != null));
    BO["safari2.0"] = (parseInt(0).toFixed != null) && BO.safari && !BO["safari1.2"];
    BO["safari1.1"] = BO.safari && !BO["safari1.2"] && !BO["safari2.0"];
    BO.ie4 = BO.ie && (document.getElementById) ? document.getElementById : false;
    BO.ie5 = (nu.substring(0, 1) == 5) && BO.ie && (document.namespaces == null) && (!BO.ie4);
    BO.ie6 = (nu.substring(0, 1) == 6) && BO.ie && (document.implementation != null) && (document.implementation.hasFeature != null) && !BO.ie7 && !BO.ie8;
    BO.ie55 = BO.ie && (document.namespaces != null) && (!BO.ie6 && !BO.ie7 && !BO.ie8 && !BO.ie8c);
    BO.version = nu.substring(0, 1);
    BO.appVer = nav;
    BO.appName = app;
    BO.agent = agent;
    return BO;
}
var BO = new detectBrowser();
var leftItem = new Array();
var cssdropdown = 
{
    disappeardelay : 250, dropdownindicator : '<span class="ddimage" /></span>', 
    enablereveal : [true, 5], enableiframeshim : 1, dropmenuobj : null, asscmenuitem : null, domsupport : document.all || document.getElementById, 
    standardbody : null, iframeshimadded : false, revealtimers : {},
    getposOffset : function (what, offsettype)
    {
        var totaloffset = (offsettype == "left") ? what.offsetLeft : what.offsetTop;
        if (offsettype == "left")
        {
            var parentEl = what.offsetParent;
            while (parentEl != null)
            {
                totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
                parentEl = parentEl.offsetParent;
            }
        }
        return totaloffset;
    },
    css : function (el, targetclass, action)
    {
        var needle = new RegExp("(^|\\s+)" + targetclass + "($|\\s+)", "ig");
        if (action == "check") {
            return needle.test(el.className);
        }
        else
        {
            if (action == "remove") {
                el.className = el.className.replace(needle, "");
            }
            else {
                if (action == "add" && !needle.test(el.className)) {
                    el.className += " " + targetclass;
                }
            }
        }
    },
    showmenu : function (dropmenu, e)
    {
        var menuItemNum = dropmenu.id.substring(0, 1);       
        if (this.enablereveal[0])
        {
            if (!dropmenu._trueheight || dropmenu._trueheight < 10) {
                dropmenu._trueheight = dropmenu.offsetHeight;
            }
            clearTimeout(this.revealtimers[dropmenu.id]);
            dropmenu.style.height = dropmenu._curheight = 0;
            dropmenu.style.overflow = "hidden";
            dropmenu.style.visibility = "visible";
            dropmenu.style.display = "";
            this.revealtimers[dropmenu.id] = setInterval(function ()
            {
                cssdropdown.revealmenu(dropmenu);
            }, 10);
        }
        else {
            dropmenu.style.visibility = "visible";
        }
        this.css(this.asscmenuitem, "selected", "add");
    },
    revealmenu : function (dropmenu, dir)
    {
        var curH = dropmenu._curheight, maxH = dropmenu._trueheight, steps = this.enablereveal[1];
        BO.ie ? steps = steps + 10 : steps;
        if (curH < maxH)
        {
            var newH = Math.min(curH, maxH);
            dropmenu.style.height = newH + "px";
            dropmenu._curheight = newH + Math.round((maxH - newH) / steps) + 1;
        }
        else
        {
            dropmenu.style.height = "auto";
            dropmenu.style.overflow = "hidden";
            clearInterval(this.revealtimers[dropmenu.id]);
        }
    },
    clearbrowseredge : function (obj, whichedge)
    {
        var edgeoffset = 0;
        if (whichedge == "rightedge")
        {
            var windowedge = document.all && !window.opera ? this.standardbody.scrollLeft + this.standardbody.clientWidth - 15 : window.pageXOffset + window.innerWidth - 15;
            var dropmenuW = this.dropmenuobj.offsetWidth;
            if (windowedge - this.dropmenuobj.x < dropmenuW) {
                edgeoffset = dropmenuW - obj.offsetWidth;
            }
        }
        else
        {
            var topedge = document.all && !window.opera ? this.standardbody.scrollTop : window.pageYOffset;
            var windowedge = document.all && !window.opera ? this.standardbody.scrollTop + this.standardbody.clientHeight - 15 : window.pageYOffset + window.innerHeight - 18;
            var dropmenuH = this.dropmenuobj._trueheight;
            if (windowedge - this.dropmenuobj.y < dropmenuH)
            {
                edgeoffset = dropmenuH + obj.offsetHeight;
                if ((this.dropmenuobj.y - topedge) < dropmenuH) {
                    edgeoffset = this.dropmenuobj.y + obj.offsetHeight - topedge;
                }
            }
        }
        return edgeoffset;
    },
    dropit : function (obj, e, dropmenuID)
    {
        if (this.dropmenuobj != null) {
            this.hidemenu();
        }
        this.clearhidemenu();
        this.dropmenuobj = document.getElementById(dropmenuID);
        this.asscmenuitem = obj;
        this.showmenu(this.dropmenuobj, e);
        this.dropmenuobj.x = this.getposOffset(obj, "left");
        this.dropmenuobj.y = this.getposOffset(obj, "top")+100;
        this.dropmenuobj.style.left = this.dropmenuobj.x - this.clearbrowseredge(obj, "rightedge") + "px";
        this.dropmenuobj.style.top = this.dropmenuobj.y - this.clearbrowseredge(obj, "bottomedge") + obj.offsetHeight + "px";
         if (this.asscmenuitem.childNodes[0].tagName == "SPAN") {
            this.asscmenuitem.childNodes[0].className = "dddown";
        }
        this.positionshim();
    },
    positionshim : function ()
    {
        if (this.iframeshimadded)
        {
            if (this.dropmenuobj.style.visibility == "visible")
            {
                //this.shimobject.style.width = this.dropmenuobj.offsetWidth + "px";
                this.shimobject.style.height = this.dropmenuobj._trueheight + "px";
                this.shimobject.style.left = parseInt(this.dropmenuobj.style.left) + "px";
                this.shimobject.style.top = parseInt(this.dropmenuobj.style.top) + "px";
                this.shimobject.style.display = "block";
            }
        }
    },
    hideshim : function ()
    {
        if (this.iframeshimadded) {
            this.shimobject.style.display = "none";
        }
    },
    isContained : function (m, e)
    {
        var e = window.event || e;
        var c = e.relatedTarget || ((e.type == "mouseover") ? e.fromElement : e.toElement);
        while (c && c != m) {
            try {
                c = c.parentNode;
            }
            catch (e) {
                c = m;
            }
        }
        if (c == m) {
            return true;
        }
        else {
            return false;
        }
    },
    dynamichide : function (m, e)
    {
        if (!this.isContained(m, e)) {
            this.delayhidemenu();
        }
    },
    delayhidemenu : function ()
    {
        this.delayhide = setTimeout("cssdropdown.hidemenu()", this.disappeardelay);
    },
    hidemenu : function ()
    {
        this.css(this.asscmenuitem, "selected", "remove");
        this.dropmenuobj.style.visibility = "hidden";
        this.dropmenuobj.style.left = this.dropmenuobj.style.top = "-1000px";
        if (this.asscmenuitem.childNodes[0].tagName == "SPAN")
        {
            this.asscmenuitem.childNodes[0].className = (this.asscmenuitem.className== "permanentSelected") ? "ddwhite" : "ddimage";
        }
        
        var menuItemNum = this.dropmenuobj.id.substring(0, 1);
        
        this.hideshim();
    },
    clearhidemenu : function ()
    {
        if (this.delayhide != "undefined") {
            clearTimeout(this.delayhide);
        }
    },
    addEvent : function (target, functionref, tasktype)
    {
        if (target.addEventListener) {
            target.addEventListener(tasktype, functionref, false);
        }
        else
        {
            if (target.attachEvent)
            {
                target.attachEvent("on" + tasktype, function ()
                {
                    return functionref.call(target, window.event);
                });
            }
        }
    },
    startchrome : function ()
    {
        if (!this.domsupport) {
            return;
        }
        this.standardbody = (document.compatMode == "CSS1Compat") ? document.documentElement : document.body;
        for (var ids = 0; ids < arguments.length; ids++)
        {
            var menuitems = document.getElementById(arguments[ids]).getElementsByTagName("a");
            for (var i = 0; i < menuitems.length; i++)
            {
                if (menuitems[i].getAttribute("rel"))
                {
                    var relvalue = menuitems[i].getAttribute("rel");
                    var asscdropdownmenu = document.getElementById(relvalue);
                    this.addEvent(asscdropdownmenu, function ()
                    {
                        cssdropdown.clearhidemenu();
                    },
                    "mouseover");
                    this.addEvent(asscdropdownmenu, function (e)
                    {
                        cssdropdown.dynamichide(this, e);
                    },
                    "mouseout");
                    this.addEvent(asscdropdownmenu, function ()
                    {
                        cssdropdown.delayhidemenu();
                    },
                    "click");
                    try {
                        menuitems[i].innerHTML = this.dropdownindicator + "&nbsp; " + menuitems[i].innerHTML;
                    }
                    catch (e) {}
                    this.addEvent(menuitems[i], function (e)
                    {
                        if (!cssdropdown.isContained(this, e))
                        {
                            var evtobj = window.event || e;
                            cssdropdown.dropit(this, evtobj, this.getAttribute("rel"));
                        }
                    },
                    "mouseover");
                    this.addEvent(menuitems[i], function (e)
                    {
                        cssdropdown.dynamichide(this, e);
                    },
                    "mouseout");
                    this.addEvent(menuitems[i], function ()
                    {
                        cssdropdown.delayhidemenu();
                    },
                    "click");
                    if (menuitems[i].className=="permanentSelected" && menuitems[i].childNodes[0].tagName == "SPAN")
                    {
                        menuitems[i].childNodes[0].className ="ddwhite";
                    };
                    asscdropdownmenu.style.width = (menuitems[i].parentNode.offsetWidth *2) + "px";
                    var dropChildren = asscdropdownmenu.childNodes;
                    for (j = 0; j < dropChildren; j++) {
                        dropChildren[j].style.width = menuitems[i].parentNode.offsetWidth - 25 + "px";
                    }
                }
            }
        }
        if (this.enableiframeshim && document.all && !window.XDomainRequest && !this.iframeshimadded)
        {
            document.write('<IFRAME id="iframeshim" src="about:blank" frameBorder="0" scrolling="no" style="left:0; top:0; position:absolute; display:none;z-index:100; background: transparent;"></IFRAME>');
            this.shimobject = document.getElementById("iframeshim");
            this.shimobject.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
            this.iframeshimadded = true;
        }
    }
};

